package com.vainycos.lotterysearch.service.mail;

import java.io.File;
import java.util.List;

public interface MailTemplate {

    /**
     * 发送简单邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     */
    void sendSimpleMessage(String subject, String content, List<String> toWho);

    /**
     * 发送简单邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     * @param ccPeoples 抄送人
     * @param bccPeoples 密抄送人
     * @param nickname 发送人昵称
     */
    void sendSimpleMessage(String subject, String content, List<String> toWho, List<String> ccPeoples, List<String> bccPeoples, String nickname);

    /**
     * 发送html内容邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     */
    void sendHtmlMessage(String subject, String content, List<String> toWho);

    /**
     * 发送html内容邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     * @param ccPeoples 抄送人
     * @param bccPeoples 密抄送人
     */
    void sendHtmlMessage(String subject, String content, List<String> toWho, List<String> ccPeoples, List<String> bccPeoples);

    /**
     * 发送附件复杂邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     * @param attachments 文件地址
     * @param isHtml 邮件内容是否需要支持html
     */
    void sendMimeMessage(String subject, String content, List<String> toWho, List<String> attachments, boolean isHtml);

    /**
     * 发送附件复杂邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     * @param ccPeoples 抄送人
     * @param bccPeoples 密抄送人
     * @param attachments 文件地址
     * @param isHtml 邮件内容是否需要支持html
     * @param nickname 发送人昵称
     */
    void sendMimeMessage(String subject, String content, List<String> toWho, List<String> ccPeoples, List<String> bccPeoples, List<String> attachments, boolean isHtml, String nickname);

    /**
     * 发送附件复杂邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param toWho 收件人
     * @param ccPeoples 抄送人
     * @param attachments 文件地址
     * @param isHtml 邮件内容是否需要支持html
     * @param nickname 发送人昵称
     */
    void sendMimeMessage(String subject, String content, List<String> toWho, List<String> ccPeoples, List<File> attachments, boolean isHtml, String nickname);

    /**
     * 发送异步邮件
     * @param mail
     */
    void sendAsyncMessage(Mail mail);

    /**
     * 发送异步邮件 支持回调函数
     * @param mail
     */
    void sendAsyncMessage(Mail mail, MailCallBack callbak);
}
